//
//  EWxChatMgrContactDelegate.h
//  WXIMSDK
//  添加好友,删除好友,接收到好友请求时的回调协议
//  Created by vince on 14-9-5.
//  Copyright (c) 2014年 网信金融集团. All rights reserved.
//
#import <Foundation/Foundation.h>

//返回状态定义
typedef enum
{
    Contact_Success,
    Contact_Failure,
    
    Contact_Sending
}ContactState;

typedef enum
{
    Contact_NoError,
    Contact_NotLogin,
    Contact_ContactIdNull,
    Contact_ReqIsSendOut,
    Contact_MessageMaxLen_Error,
    Contact_ReasonMaxLen_Error,
    Contact_RemarkStrMaxLen_Error,
    Contact_Timerout_Error,
    Contact_Sever_Error,
    Contact_SeverNoExist
}ContactErrorState;



@protocol EWxChatMgrContactDelegate <NSObject>

@optional


/*!
 @method
 @brief        请求获取好友联系人的回调
 @param        state 返回ContactState定义枚举值
 @discussion
 */
-(void)requestMyAllContactsRspState:(ContactState)state errorState:(ContactErrorState)errorState;

/*!
 @method
 @brief        邀请好友联系人的回调
 @param        state 返回ContactState定义枚举值
 @param        contactId 邀请联系人Id
 @param        state     返回ContactState枚举值
 @discussion
 */
-(void)inviteContactRspState:(ContactState)state contactId:(NSString *)contactId errorState:(ContactErrorState)errorState;

/*!
 @method
 @brief        拒绝好友的邀请
 @param        state 返回ContactState定义枚举值
 @param        contactId 邀请联系人Id
 @param        state     返回ContactState枚举值
 @discussion
 */
- (void)rejectInviteContactRspState:(ContactState)state contactId:(NSString *)contactId errorState:(ContactErrorState)errorState;

/*!
 @method
 @brief         好友从列表中被删除
 @discussion
 @param         contactId 删除的好友contactId
 @param         state     返回ContactState枚举值
 */
- (void)removeContactRsp:(ContactState)state contactId:(NSString *)contactId errorState:(ContactErrorState)errorState;


/*!
 @method
 @brief       修改好友备注信息
 @discussion
 @param       contactId 删除的好友contactId
 @param       state  返回ContactState枚举值
 */
- (void)remarkContactRsp:(ContactState)state contactId:(NSString *)contactId errorState:(ContactErrorState)errorState;

/*!
 @method
 @brief      接受好友请求成功的回调
 @discussion
 @param      contactId 登录用户接受了"contactId发过来的好友请求"成功的回调
 */
- (void)acceptContactInviteRsp:(ContactState)state contactId:(NSString *)contactId errorState:(ContactErrorState)errorState;




/***********************************以下是收到服务器端的事件************************************/
/*!
 @method
 @brief 接收到好友请求时的通知
 @discussion
 @param contactId 发起好友请求的用户Id
 @param inviteMessage  收到好友请求时的say hello消息
 */
- (void)didReceiveContactsInviteMessage:(NSString *)contactId message:(NSString *)inviteMessage;

/*!
 @method
 @brief 好友请求被接受时的回调
 @discussion
 @param contactId 之前发出的好友请求被用户contactId接受了
 */
- (void)didAcceptedByContact:(NSString *)username;


/*!
 @method
 @brief 好友请求被拒绝时的回调
 @discussion
 @param contactId 之前发出的好友请求被用户contactId拒绝了
 */
- (void)didRejectedByContact:(NSString *)contactId;


/*!
 @method
 @brief         好友上线和下线时的通知
 @discussion
 @param         isOnline 好友是否在线 YES:好友上线；NO:好友下线
 @param         contactId 改变了状态的用户
 */
- (void)didChangedOnlineStatus:(BOOL)isOnline forContactId:(NSString *)contactId;


/*!
 @method
 @brief 联系人状态更新的通知
 @discussion
 @param contactId 联系人Id
 @param remark    备注    -----状态
 */
- (void)onContactsUpdate:(NSString *)contactId forremark:(NSString *)remark;


/*!
 @method
 @brief 通讯录信息发生变化时的通知
 @discussion
 @param contactList 好友信息列表
 @param changedContacts 修改了的用户列表
 @param isAdd (YES为新添加好友, NO为删除好友)
 */
- (void)didUpdateContactList:(NSArray *)contactList
             changedContacts:(NSArray *)changedContacts
                       isAdd:(BOOL)isAdd;


@end
